// dfs(双for+5种判断)
const readline = require("readline");
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});

let S, W, B; // 羊, 狼, 船

rl.on("line", (line) => {
    if (S === undefined) {
        [S, W, B] = line.trim().split(" ").map(Number)
        console.log(getResult(S, W, B))
        // clear
        S = W = B = undefined;
    }
})

function getResult(S, W, B) {
    let ans = []

    dfs(S, W, B, 0, 0, 0, ans)
    if (ans.length) {
        return Math.min(...ans);
    } else {
        return 0;
    }

}

/**
 *  深度遍历,获取ans
 * @param S {number} sheep
 * @param W {number} wolf
 * @param B {number} boat
 * @param oppositeS {number} opposite sheep
 * @param oppositeW {number} opposite wolf
 * @param count {number} boat count
 * @param ans {[number]}  可能的答案数组
 */
function dfs(S, W, B, oppositeS, oppositeW, count, ans) {
    // 截止条件
    if(S === W && S === 0){ // 拉完了
        ans.push(count);
        return
    }
    if(S + W <= B) { // 剪枝,提升3倍
        ans.push(count + 1);
        return;
    }


    // 装一次船
    for (let i = 0; i <= Math.min(B, S); i++) { // 羊
        for (let j = 0; j <= Math.min(B, W); j++) { // 狼
            // ◆不合法的条件
            // 1. 空船
            if (i === 0 && j === 0) continue;

            // 2. 超载
            if (i + j > B) break;

            // 3. 这边羊不足
            if(S - i <= W - j && S - i !== 0) continue;
            // 4. 对面羊不足
            if(oppositeS + i <= oppositeW + j && oppositeS + i !== 0) break;
            // 5. 对岸没羊, 全是狼, 且大于等于一船: 下次肯定无法进行下午
            if(oppositeS + i === 0 && oppositeW + j >= B) break;

            //通过,进行下一次
            dfs(S - i, W - j, B, oppositeS + i, oppositeW + j, count + 1, ans)
        }
    }

}